package com.bst.etl.service;

import com.bst.common.core.domain.AjaxResult;
import com.bst.common.core.domain.Ztree;
import com.bst.etl.domain.EtlDrawDm;
import com.bst.md.domain.MdIndex;
import com.bst.md.domain.MdMedPubfld;
import com.bst.md.domain.MdMedTb;
import com.bst.md.domain.MdMedTbFld;

import java.util.List;
import java.util.Map;

/**
 * 数据集市Service接口
 * 
 * @author ruoyi
 * @date 2022-07-17
 */
public interface IEtlDrawDmService 
{
    /**
     * 查询数据集市
     *
     * @param idDrawDm 数据集市主键
     * @return 数据集市
     */
    public EtlDrawDm selectEtlDrawDmByIdDrawDm(Long idDrawDm);

    /**
     * 查询数据集市列表
     *
     * @param etlDrawDm 数据集市
     * @return 数据集市集合
     */
    public List<EtlDrawDm> selectEtlDrawDmList(EtlDrawDm etlDrawDm);

    /**
     * 新增数据集市
     *
     * @param etlDrawDm 数据集市
     * @return 结果
     */
    public int insertEtlDrawDm(EtlDrawDm etlDrawDm);

    /**
     * 修改数据集市
     *
     * @param etlDrawDm 数据集市
     * @return 结果
     */
    public int updateEtlDrawDm(EtlDrawDm etlDrawDm);

    /**
     * 批量删除数据集市
     *
     * @param idDrawDms 需要删除的数据集市主键集合
     * @return 结果
     */
    public int deleteEtlDrawDmByIdDrawDms(String idDrawDms);

    /**
     * 删除数据集市信息
     *
     * @param idDrawDm 数据集市主键
     * @return 结果
     */
    public int deleteEtlDrawDmByIdDrawDm(Long idDrawDm);

    List<EtlDrawDm> selectEtlDrawDmByIndex(MdIndex mdIndex);

    List<MdMedTb> selectRelys(Long idDrawDm);

    List<MdMedTb> selectNotRelyList(Long idDrawDm);

    List<MdMedTbFld> selectRelyFlds(Long idDrawDm);

    void deleteRelyTable(String tableName,Long idDrawDm);

    void deleteRelyFlds(String fld,Long idDrawDm);

    AjaxResult createDmTable(Long idDrawDm);

    List<EtlDrawDm> selectEtlDrawDmByIdTemplate(Integer idTmplate);

    List<MdMedPubfld> selectDmFldsByIdIndexs(String idIndexs);

    Map<String, EtlDrawDm> findByIdIndexs(List<String> idIndexs);

    EtlDrawDm selectEtlDrawDmByIdIndex(String idIndex);

    List<Ztree> selectRootIndex();
}
